package org.jsola.hr.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jsola.approval.vo.ApproFlowListVO;
import org.jsola.contract.entity.CategoryDO;
import org.jsola.contract.entity.SealDO;
import org.jsola.core.vo.BaseVO;
import org.jsola.hr.entity.*;
import org.jsola.salary.vo.SalaryTemplateVO;

import java.util.Date;
import java.util.List;

import static org.jsola.core.example.BaseExample.*;
import static org.jsola.hr.example.CompanyExample.*;

/**
 * 用工单位
 *
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "【用工单位】详情展示对象")
@Data
public class CompanyVO extends BaseVO {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(notes = N_ID, example = E_ID)
    private String id;

    @ApiModelProperty(notes = N_NAME, example = E_NAME)
    private String name;

    @ApiModelProperty(notes = N_INDUSTRY, example = E_INDUSTRY)
    private String industry;

    @ApiModelProperty(notes = N_ADMINISTRATOR_USER_IDS, example = E_ADMINISTRATOR_USER_IDS)
    private String administratorUserIds;

    @ApiModelProperty(notes = N_LOGO, example = E_LOGO)
    private String logo;

    @ApiModelProperty(notes = N_BUSINESS_SCOPE, example = E_BUSINESS_SCOPE)
    private String businessScope;

    @ApiModelProperty(notes = N_PROFILE, example = E_PROFILE)
    private String profile;

    @ApiModelProperty(notes = N_LEGAL_PERSON, example = E_LEGAL_PERSON)
    private String legalPerson;

    @ApiModelProperty(notes = N_ADDRESS, example = E_ADDRESS)
    private String address;

    @ApiModelProperty(notes = N_PERSON_SIZE, example = E_PERSON_SIZE)
    private String personSize;

    @ApiModelProperty(notes = N_CLIENT_LEVEL, example = E_CLIENT_LEVEL)
    private String clientLevel;

    @ApiModelProperty(notes = N_CLIENT_PHONE, example = E_CLIENT_PHONE)
    private String clientPhone;

    @ApiModelProperty(notes = N_OFFICIAL_WEBSITE, example = E_OFFICIAL_WEBSITE)
    private String officialWebsite;

    @ApiModelProperty(notes = N_TELEPHONE, example = E_TELEPHONE)
    private String telephone;

    @ApiModelProperty(notes = N_EMAIL, example = E_EMAIL)
    private String email;

    @ApiModelProperty(notes = N_DEP_ID, example = E_DEP_ID)
    private String depId;

    @ApiModelProperty(notes = N_SERVER_ANNEX, example = E_SERVER_ANNEX)
    private String serverAnnex;

    @ApiModelProperty(notes = N_GMT_CREATE, example = E_GMT_CREATE)
    private Date gmtCreate;

    @ApiModelProperty(notes = N_GMT_MODIFIED, example = E_GMT_MODIFIED)
    private Date gmtModified;

    @ApiModelProperty(notes = "工价/劳务费规则")
    List<SalaryCalculateRuleGroupDO> salaryCalculateRuleGroupDOList;

    @ApiModelProperty(notes = "合同模板id列表")
    private List<CategoryDO> categoryList;

    @ApiModelProperty(notes = "工资表模板id列表")
    private List<SalaryTemplateVO> salaryTemplateList;

    @ApiModelProperty(notes = "参保方案列表")
    private List<SocProgDO> socProgList;

    @ApiModelProperty(notes = "审批模板")
    List<ApproFlowListVO> approFlowListVOList;

    @ApiModelProperty(notes = "入职模板")
    List<CustomTemplateDO> customTemplateDOList;

    @ApiModelProperty(notes = "合同印章id列表")
    private List<SealDO> sealList;

    @ApiModelProperty(notes = "管理员列表")
    private List<CompanyListVO.Administrator> administratorList;

    @ApiModelProperty(notes = "失败信息列表")
    private List<String> errorList;

    @ApiModelProperty(notes = "返费规则")
    private SaleRebatesRulesDO saleRebatesRules;

    @ApiModelProperty(notes = "所属销售")
    private List<CompanySaleUserDO> companySaleUser;

    @ApiModelProperty(notes = "销售-合同信息")
    private List<CompanySaleServerDO>  companySaleServer;

    @ApiModelProperty(notes = "用工单位分组Ids")
    private List<String> groupIds;

    @ApiModelProperty(notes = "销售绑定时间")
    private Date saleBindTime;

    @ApiModelProperty(notes = "合同状态：true处于有效期内；false:已过期")
    private Boolean contractStatus;

    @Data
    public static class Administrator {
        @ApiModelProperty(notes = "管理员员工姓名")
        private String administratorUserName;

        @ApiModelProperty(notes = "管理员员工电话")
        private String administratorUserPhone;
    }

}

